// use std::thread;

// fn main() {
//     let k = vec![1, 2, 3, 4];
//     let r = thread::spawn(move || {
//         println!("{:?}!", k);
//     }); // 报错原因: k的所有权可能会小于这个r子线程

//     // let r = thread::spawn(||{
//     //         for i in k {
//     //             println!("{:?}!",i);
//     //         }
//     // });// 不报错原因: for会获得k的所有权

//     // r.join().unwrap();
// }

// use std::{sync::mpsc, thread, time::Duration};

// fn main() {
//     let (tx, rx) = mpsc::channel();
//     let tx1= mpsc::Sender::clone(&tx);
 

//     thread::spawn(move || {
//         let send_list = vec![
//             String::from("Hi"),
//             String::from("KKK"),
//             String::from("LLL"),
//             String::from("YYY"),
//         ];
//         for sl in send_list {
//             tx.send(sl).unwrap();
//             thread::sleep(Duration::from_millis(100));
//         }
//     });
//     thread::spawn(move || {
//         let send_list = vec![
//             String::from("1: Hi"),
//             String::from("1: KKK"),
//             String::from("1: LLL"),
//             String::from("1: YYY"),
//         ];
//         for sl in send_list {
//             tx1.send(sl).unwrap();
//             thread::sleep(Duration::from_millis(100));
//         }
//     });

//     for recived in rx {
//         println!("Got:{}!",recived);
//     }
// }

use std::sync::Mutex;

fn main(){
    let m = Mutex::new(5);
    {
        let mut m = m.lock().unwrap();
        *m = 6;
    }// 离开作用域自动解锁
    println!("num: {:?}", m);
}
